a. Field of the Invention
The present invention generally pertains to computers and more particularly to the use of multiple data storage devices on a single host controller to expand storage capabilities of a computer system.
b. Description of the Background
Integrated Drive Electronics and Advanced Technology Attachment (IDE/ATA) specifications have long been a primary technology in Personal Computer (PC) systems for communication and data transfer between the PC system and the attached data storage devices. IDE/ATA uses a parallel communication connection that allows for a relatively short cable length, and requires a large number of individual wires within the cable. To alleviate these problems the PC industry established the emerging Serial Advanced Technology Attachment (SATA) specification, which employs a serial communication connection that increases the cable length and reduces the number of wires within the cable.
Another emerging specification in the attached storage field is the Serial Attached SCSI (SAS) specification. The SAS specification is based on the Small Computer System Interface (SCSI) specification, which is a common alternative to the IDE/ATA specification for attaching storage devices to PC systems. SAS is similar to SATA with respect to cabling and communication speed. The SAS specification also incorporates the SATA specification, allowing a mix of multiple SAS and SATA end devices, managed with a single SAS host controller. The SAS host controller combined with SAS expanders can support a very large number of SATA end devices. SATA has approached the subject of supporting multiple end devices by adding definitions for a port multiplier to the SATA specification. The SATA port multiplier technology is more limited than the SAS specification in that the SATA port multiplier supports fewer end devices, and only supports SATA end devices.
A SAS host controller is not required to support Native Command Queuing (NCQ) for SATA end devices. However, a SAS host controller that supports NCQ SATA end device capabilities, must properly handle the NCQ features of the SATA end devices. Each SATA end device may have a maximum of thirty-two entries in the queue for Native Commands (NC). Queuing NC's (Native Commands) allows the SATA device to optimize the order of execution of the queued commands with respect to the end device's physical and logical limitations. For instance, two or more commands in the queue may access data stored physically close to each other on a hard disk. Thus, permitting the SATA device to get all of the data in one physical region at the same time, saving time by reducing the amount of mechanical movement necessary for seeking data by the reading head. The optimization can be based on the individual characteristics of the SATA end device, whether the SATA end device is a hard disk, optical drive, or some other attached storage device. The more queue entries (the queue depth), the better the end device can optimize the execution of the commands. However, the greater the queue depth, the more complicated the optimization logic becomes. Hence, as has been adopted by the SATA specification, the maximum queue depth has typically been limited to thirty-two queue entries.
The physical world limits the maximum number of SATA end devices that a SAS host controller can manage. The SAS host controller must physically and logically be able to manage all of the SATA end devices within the system. The number of devices a SAS host controller may access is limited by the number of physical cable connection ports on the SAS host controller combined with the number of physical cable connection ports available on any SAS expanders in the system. Using SAS expanders in a fanout fashion allows for an essentially infinite number of connections to SATA end devices using a single SAS host controller. The fanout configuration leaves the logical implementation of the SAS host controller as the primary limitation. Just as the SATA end device becomes more complicated with an increased NC queue depth, the SAS host controller also becomes more complicated as the NC queue depth is increased, since the SAS host controller must monitor the queues of each SATA end device. The SAS host controller must also manage the communication with each SATA end device. The larger the number of SATA end devices, the more memory resources and computing power is necessary for the SAS host controller to manage the attached storage system. The queue depth and the number of end devices multiplicatively increase the memory resource requirements and the computing power requirements of the SAS host controller. A typical SAS host controller has a fixed amount of memory and a fixed degree of computational power. Hence, typical SAS controllers fix the number of devices and the NC queue depth to match the memory and computational power of the SAS controller.